In a write-intensive environment, such as system checkpoint write operations for database server applications, input/output (I/O) requests cannot be eliminated. Prior art solutions have sought to batch writes together into system transactions or checkpoint operations, where each transaction flushes a number of user transactions to disk at the same time. During each system transaction, the server is unable to respond rapidly to requests, particularly additional I/O requests. Thus, it is desirable to reduce the frequency and duration of these system transactions. System transaction frequency is affected in part by the rate of change in the files and the local cache size. As system transactions become less frequent, writes have less of an immediate impact on performance. However, if one merely increases the cache size to reduce transaction frequency, the system transaction will contain more writes, rendering the server less responsive for longer periods of time during system transactions.
Many file management schemes use an indirection mechanism for finding a specific page on disk. All links within the data (such as the link between a key entry and the data record it indexes) use logical page numbers. The logical page numbers are translated into actual file offsets (known as the physical page) by a mapping mechanism. This mapping mechanism uses a directory or directory algorithms to locate a physical page given a logical page number. This approach allows the physical location of a record to change without requiring changes to its links—only the map has to be updated.
One of the characteristics of disk input/output (I/O) operations is that once the write begins, it costs much less to continue writing than it does for the disk to stop, reposition to a new place, and begin writing again. In other words, contiguous writes are significantly faster than non-contiguous writes. Furthermore, write calls require an operating system (OS) level event. Thus, a single large write performs substantially better than multiple small writes.